package global;

import android.annotation.SuppressLint;
import java.util.ArrayList;

@SuppressWarnings("hiding")
public class MyArrayList<Object>{
	private int tag;
	private ArrayList<ArrayList<Object>> list = new ArrayList<ArrayList<Object>>();
	public int getTag() {
		return tag;
	}

	public void setTag(int tag) {
		this.tag = tag;
	}
	
	public int size(){
		return list.size();
	}
	
	public Object getElementByTag(int Tag){
		Object object = null;
		for(int i = 0; i < list.size(); i++){
			if(Integer.parseInt(list.get(i).get(1).toString())== Tag){
				object = list.get(i).get(0);
				break;
			}
		}
		return object;
	}
	
	private int getIndexByTag(int Tag){
		for(int i = 0; i < list.size(); i++){
			if(Integer.parseInt(list.get(i).get(1).toString())== Tag){
				return i;
			}
		}
		return -1;
	}
	
	private ArrayList<Object> getIndex(int index){
		return list.get(index);
	}
	@SuppressLint("UseValueOf")
	public void add(Object object, int Tag){
		@SuppressWarnings("unchecked")
		Object tagObject = (Object) new Integer(Tag);
		ArrayList<Object> arrTemp = new ArrayList<Object>(); 
		arrTemp.add(object);
		arrTemp.add(tagObject);
		if(!isExisted(arrTemp))
			list.add(arrTemp);
	}
	public void removeAll(){
		while(list.size() > 0){
			list.remove(0);
		}
	}
	
	public void removeAt(int tag){
		list.remove(getIndexByTag(tag));
	}
	public void addAll(MyArrayList<Object> myArrayList){
		for(int i = 0; i < myArrayList.size(); i++){
			list.add(myArrayList.getIndex(i));
		}
	}
	
	
	private boolean isExisted(ArrayList<Object> arrObject){
		boolean isExist = false;
		for(int i = 0 ; i < list.size(); i++){
			if(list.get(i).get(0).equals(arrObject.get(0)) && list.get(i).get(1) == arrObject.get(1)){
				return isExist;
			}
		}
		return isExist;
	}
}
